This application relates to Disclosure Document No. 402249, received by the United States Patent and Trademark Office on Jul. 9, 1996, and Disclosure Document No. 414040, received by the United States Patent and Trademark Office on Feb. 13, 1997.
Electronic musical instruments that can perform automatic arpeggios are well known, in which data of depressed keys in a keyboard are stored in shift registers, and the tones of the depressed keys are selected one-by-one by scanning the shift registers. However, the means of selecting the order of the tones are generally very simple and produce very repetitive, mechanical sounding musical phrases. Also well known are electronic musical instruments that provide more complicated methods of selecting data from the shift registers, such as basing the choice of data and direction of movement on previously received data. However, the resulting patterns, while more complicated, still sound repetitive and mechanical and are of limited variety.
In U.S. Pat. No. 5,714,705 Kishimoto et. al., an arpeggiator is shown in which key depressions are scanned according to independent rhythm and scanning patterns. This reference also discloses a method whereby key data may be maintained in a buffer in the order entered by the user in a step-time fashion. However, the resulting arpeggios are thereby limited to producing only the notes the user has depressed, or the keys entered in a preentered fashion, thereby limiting the tonal complexity of the resulting arpeggios.
In the Computer Music Journal, Vol. 11, No. 4, Winter 1987, Zicarelli describes software that allows a musical pattern of notes to be played back with independent rhythm, duration, and accent patterns. However, the musical pattern of notes must be constructed in non-real-time, or entered from a keyboard in a cumbersome step-entry fashion. The rhythm, duration and accent pattern steps may contain a contiguous random range corresponding to values in a lookup table. However, no means of mathematically weighting the random choice is provided other than assigning more than one location in the lookup table to the same value. The values within the steps are not independently selectable, and there is no way to repeat a certain random sequence if desired. Furthermore, the rhythmic and tonal patterns resulting from the use of the disclosed randomness are unpredictable and difficult to utilize in a convincing musical fashion.
Electronic musical devices that allow a musical note to be repeated are also well known. However, the rhythmic interval of repetition is typically fixed, and the effect itself is of such simplicity as to rapidly become too familiar. Furthermore, if the repeated tones overlap, each overlap requires an additional voice of the tone module for processing, and problems result whereby the polyphony of the instrument is negatively affected by the number of repeats being generated. U.S. Pat. No. 4,901,616 issued to Matsubara, et al. shows a method for allowing repeated notes to be generated even if the input notes exceed the polyphony of an associated tone module. However, the resulting repeated notes do not have any associated polyphony control scheme. Furthermore, the repeated notes have a fixed rhythm and no pitch modification, resulting in a repeated effect that offers very little further diversity.
Electronic musical devices are also well known, in both hardware and software form, that are capable of recording and playing back a performance from a keyboard or other controller as MIDI data. However, many traditional musical effects such as guitar strumming and harp glissandi are difficult to program in a convincing fashion from a keyboard-type controller.
Electronic musical instruments that allow the user to bend the pitches of a note are also well known. The MIDI Standard provides for the pitch bend message, which is used to bend the pitch of a note or notes while they are being sustained. Many popular keyboards provide a lever or wheel that is used to bend the pitch in this manner. This can be used to imitate various bending techniques utilized by stringed instrument players (e.g. guitarists) and ethnic instrument players (e.g. the bending of a shakuhachi), among others. Furthermore, it can be used to simulate gliding from one pitch to the next. Many of these techniques generally require bending to a previously played pitch, bending to a pitch to be played next by the user, or bending to a precise musical pitch. However, it is traditionally difficult for a musician to perform these bending effects convincingly due to the nature of the pitch bend wheel or other provided lever and the degree of coordination required.
It is an object of the present invention to provide a means whereby musical effects of an exceedingly complex nature and almost infinite variety can be generated, such musical effects having a non-mechanical, non-repetitive nature and being created and varied in real-time.
It is another object of the present invention to provide a means of generating music randomly based on input source material, where the randomness is controlled in a musical fashion, and randomly generated musical sequences are repeatable as desired.
It is another object of the present invention to provide a means by which a non-musical user can trigger musically correct notes and effects during the playback of pre-recorded music.
It is another object of the present invention to provide a method of manipulating MIDI pitch bend data in a fashion that realistically recreates several challenging performance-based nuances of stringed and ethnic instruments, in addition to other useful and novel effects.
It is another object of the present invention to provide a means whereby musical effects traditionally difficult to achieve, such as harp glissandi, guitar strumming, and string-bending effects are made easy to realize by any user.
The apparatus of the present invention for a general purpose computer-based system for generating musical output data related to input notes to create repeated musical effects includes an input note having a pitch value represented in a predetermined electronic format, a transposition pattern having a current transposition pattern step including a transposition data item indicating a variable transposition of the input note, a transposed note having the input pitch value modified according to the transposition data item, the current transposition pattern step being advanced to a next transposition step, a rhythm pattern comprised of a current rhythm pattern step including a rhythm data item representing a predetermined period of time, the current rhythm pattern step being advanced to a next rhythm pattern step, and a scheduler for scheduling the transposed note to be output according to the rhythm data item.
The method of the present invention for a general purpose computer-implemented method of generating musical output data for repeating musical effects on input notes includes the step of storing an input note having an input pitch and at least one repetition of the steps of outputting the stored note with the stored pitch, transposing the stored pitch to create a transposed note according to a transposition data item, the transposition data item associated with a current transposition pattern step in a transposition pattern, the transposition pattern having a transposition pattern index indicating the current transposition pattern step, advancing the current transposition pattern step to a next transposition pattern step, determining an output time according to a rhythm data item, the rhythm data item associated with a current rhythm pattern step in a rhythm pattern, the rhythm pattern having a rhythm pattern index indicating the current rhythm pattern step, advancing the current rhythm pattern step to a next rhythm pattern step, storing the transposed note as the stored note, and scheduling the stored note to be output at the output time.
In another embodiment of the present invention, the method for a general purpose computer-implemented method of generating musical output data for repeating musical effects on input notes includes the steps of inputting an input note having an input pitch, outputting the input note, transposing the input pitch to create a transposed note according to a transposition data item, the transposition data item associated with a current transposition pattern step in a transposition pattern, the transposition pattern having a transposition pattern index indicating the current transposition pattern step, advancing the current transposition pattern step to a next transposition pattern step, determining an output time according to a rhythm data item, the rhythm data item associated with a current rhythm pattern step in a rhythm pattern, the rhythm pattern having a rhythm pattern index indicating the current rhythm pattern step, advancing the current rhythm pattern step to a next rhythm pattern step, scheduling the transposed note to be output at the output time, and outputting the transposed note.
Broadly, this method and apparatus concern the collection of musical data from a source, the extraction of patterns from the musical data, the creation of at least one addressable series, the reading out of data from the addressable series, the generation of a repeated effect, and the generation of automatic pitch-bending effects.
Collecting musical data may comprise the step of retrieving a predetermined set of pitches or a set of pitches corresponding to a predetermined chord type, or collecting musical data from a source of MIDI data or other musical data for a predetermined interval of time. Collecting musical data may comprise the step of recording digital audio for a predetermined interval of time, into one or more locations in memory. Collecting musical data may comprise the step of retrieving a predetermined section of MIDI data or other musical data.
Once the musical data has been collected, patterns can be obtained by extracting a plurality of rhythm, pitch, duration, velocity, bend, and/or pan, program, and/or other MIDI controller values from the musical data. Selective derivation of rhythm, index, cluster, strum, drum, duration, velocity, bend, and/or spatial location, voice change, and/or other MIDI controller patterns from one or more of the pluralities of the extracted values may be performed; and/or predetermined or preexisting patterns, which may have been derived from musical data or created independently of musical data may be obtained. These patterns may be of equal or varying lengths.
The addressable series may be a note series derived from the musical data. An initial note series consisting of pitch, pitch and velocity, or pitch and null values can be extracted or derived from the musical data. The initial note series may also contain identifiers of the locations in memory of digital audio data. Next, one or more of the following steps can be performed:
1. constrain selected portions of the initial note series to a predetermined range;
2. remove selected duplicate pitch values;
3. sort selected portions of the initial note series by pitch or velocity;
4. shift selected portions of the initial note series by an interval;
5. replicate selected portions of the initial note series, and shift selected portions of the replicated initial note series by an interval;
6. substitute new data for selected portions of the initial note series, substituting tonal pitches for any atonal pitches or substituting new data according to a conversion table;
7. create an intermediate note series from the initial note series and create a new note series by retrieving selected portions of the intermediate note series by moving through the intermediate note series according to an indexing pattern; and
8. remove selected portions of the note series.
The addressable series may be a drum pattern of one or more notes and one or more null values, or pools of one or more notes or one or more notes and null values. This drum pattern can be derived from the musical data, or can be created independently of the musical data.
The addressable series may be a pointer series created by acquiring the addresses of the pitches, or the pitches and velocities, from a selected portion of MIDI data or other musical data, at selected points in the data.
The individual notes of the note series with or without digital audio data location identifiers, or the individual notes and null values or pools of notes or notes and null values of the drum pattern, or the acquired addresses of pitches or pitches and velocities in the pointer series, are then placed in a plurality of memory locations in a memory.
Having stored data in memory, the contents of the memory locations are read. The read out of the data may be performed using multiple groups of patterns and parameters. A group of patterns and parameters may contain from one to all of the various patterns and parameters used during the read out of the data. The process can switch between groups of patterns and parameters on demand or according to a phase pattern, at a predetermined time, or after reading or processing a quantity of data.
The process of reading the data in the memory may comprise at least one application of one or more of the following steps:
1. reading from one or more memory locations at specific intervals according to a predetermined or extracted rhythm pattern, by counting clock or demand events and moving through the rhythm pattern in response to predetermined counts;
2. reading selected memory locations by reading selected memory locations according to a pattern of memory location addresses, moving through the memory locations according to an indexing pattern, or reading selected memory locations on demand, and performing one or more of the following:
a. reading one or more memory locations according to a predetermined or extracted cluster pattern, and selectively moving through the memory locations according to the cluster pattern;
b. reading one or more memory locations by using a pseudo-random number generator to select one or more locations at random, with or without using a weighting method to influence the random selections;
c. reading one or more additional memory locations according to a replication algorithm; and
d. reading a plurality of memory locations and issuing or processing the notes, notes and null values, or pitches in an ordered sequence according to a predetermined or extracted strum pattern, where sequential notes, notes and null values, or pitches are separated by predetermined time intervals;
3. selectively modifying or replacing the velocity of the notes according to a predetermined or extracted velocity pattern;
4. selectively constraining the pitch of the notes to a predetermined range;
5. selectively disregarding duplicate pitch values when compared to previous pitch values;
6. selectively shifting the pitch of the note by an interval;
7. selectively substituting a new pitch for the pitch, by substituting tonal values for atonal values, or substituting according to a conversion table;
8. selectively disregarding pitch values;
9. selectively utilizing one or more envelope generators and performing one or more of the following with the output of the envelope generator functions:
a. modifying or replacing the velocity of the notes as they are produced;
b. modifying or controlling the tempo of a clock event generator driving the process of the reading out of data; and
c. outputting pitch bend and/or other MIDI controller values.
10. deriving duration, velocity, bend and/or pan, program, and/or other MIDI controller values from respective predetermined or extracted duration, velocity, bend and/or spatial location, voice change, and/or other MIDI controller patterns, over a predetermined time interval or for a predetermined quantity of notes;
11. using a pseudo-random number generator to derive random values from the patterns, with or without using a weighting method to influence the derived random values;
12. applying independently received actual velocity and/or duration values to the notes;
13. reading one or more notes of the note series, deriving pitch bend, duration, and/or spatial location, voice change, and/or other MIDI controller values from the notes, and selectively scaling the resulting values;
14. switching between groups of patterns and parameters according to a phase pattern;
15. moving through each pattern independently of other patterns, in a predetermined or random order;
16. selectively and independently moving to predetermined points in one or more patterns; and
17. playing back digital audio data corresponding to one or more of the read out memory locations, and performing one or more of the following:
a. using pitches derived from the read out memory location(s) to transpose the pitch of the digital audio data; and
b. using velocities derived from the read out memory location(s) to modify the amplitude of the digital audio data.
The process of reading out of data may be independently and selectively started, stopped, paused, resumed, and initialized to starting values on demand. Envelope generators utilized during the process may also be independently and selectively started, stopped, paused, and resumed. The reading out of data may be accompanied by the generation of automatic pitch bending effects.
After the data has been read out, it may be optionally repeated. Alternately or in conjunction, the source data may be repeated, or the collected musical data may be repeated. A group of patterns and parameters may contain from one to all of the various patterns and parameters used during the repetition of the data. The process can switch between groups of patterns and parameters on demand or according to a phase pattern, at a predetermined time, or after repeating or processing a quantity of data.
The process of generating a repeated effect may comprise at least one application of one or more of the following steps:
1. repeating the data at specific intervals according to a predetermined or extracted rhythm pattern, rhythm modifier and rhythm offset;
2. generating additional repeated data at each interval according to a predetermined or extracted cluster pattern, cluster modifier and cluster offset;
3. issuing the repeated data at each interval in an ordered sequence according to a predetermined or extracted strum pattern, where sequential data are separated by predetermined time intervals;
4. transposing the pitches of notes at each repeated interval according to a predetermined or extracted transposition pattern, transposition modifier and transposition offset;
5. locating an input pitch or the closest match to an input pitch in a table of stored musical pitches, and performing one of the following:
a. moving sequentially forward or backward through the table at each interval and selecting pitches to be generated;
b. selecting pitches in the table at each interval according to a pattern of table location addresses; or
c. moving through the table and selecting pitches at each interval according to an index pattern, index modifier and index offset.
6. generating additional data at each interval according to a replication algorithm;
7. selectively modifying or replacing the velocity of the notes at each interval according to a predetermined or extracted velocity pattern, velocity modifier, and velocity offset;
8. selectively constraining the pitch of the notes to a predetermined range;
9. selectively disregarding duplicate pitch values when compared to previous pitch values;
10. selectively substituting a new pitch for the pitch, by substituting tonal values for atonal values, or substituting according to a conversion table;
11. selectively disregarding pitch values;
12. selectively utilizing one or more envelope generators and performing one or more of the following with the output of the envelope generator functions:
a. modifying or replacing the velocity of the notes as they are produced;
b. modifying or controlling the tempo of a clock event generator driving the process of the reading out of data; and
c. outputting pitch bend and/or other MIDI controller values.
13. deriving duration, velocity, and/or pan, program, and/or other MIDI controller values from respective predetermined or extracted duration, velocity, and/or spatial location, voice change, and/or other MIDI controller patterns, over a predetermined time interval or for a predetermined quantity of repetitions;
14. using a pseudo-random number generator to derive random values from the patterns, with or without using a weighting method to influence the derived random values;
15. switching between groups of patterns and parameters according to a phase pattern;
16. moving through each pattern independently of other patterns, in a predetermined or random order;
17. selectively and independently moving to predetermined points in one or more patterns; and
18. playing back digital audio data at each interval, and performing one or more of the following:
a. using the pitches of the notes at each interval to transpose the pitch of the digital audio data; and
b. using the velocities of the notes at each interval to modify the amplitude of the digital audio data.
The process of generating a repeated effect may be independently and selectively started and stopped on demand. Envelope generators utilized during the process may also be independently and selectively started, stopped, paused, and resumed. The generation of the repeated effect may be accompanied by the generation of automatic pitch bending effects.
Once the foregoing has been completed, the resultant MIDI (or other format) data can be transmitted, stored, utilized as a guide for the playback of digital audio, or otherwise used. As desired, the foregoing process can be performed one or more times simultaneously and each performance can be done independently of the others.
In addition to the method described above, music can be generated using a hardware rendition of this method. Such an apparatus can be a general-purpose computer programmed to perform the method or dedicated hardware specifically configured to perform the process. Moreover, the method and hardware may be used in a stand-alone fashion or as part of a system.